实验四:文件状态测试

您所在的位置:网站首页 shell 文件测试 实验四:文件状态测试

实验四:文件状态测试

2024-07-07 11:10| 来源: 网络整理| 查看: 265

实验目的

熟悉UNIX的基本SHELL程序设计方法,包括:

命令行参数检测

变量设置

文件状态检测与特定信息读取

程序运行控制

实验内容

编写一个SHELL程序,动态检测指定文件的状态信息,当文件的大小发生改变时,给出提示信息,并继续前进检测。

当文件的大小的变化次数或持续检查无变化次数达到一定值时,退出检查,程序结束。

实验内容:shell程序设计思路

(1)清屏;

(2)提示用户输入要检测其状态的文件名;

(3)显示该文件的状态信息(提示:该状态信息可由命令ls –l 来得到),或找不到该文件时的错误提示;

(4)用cut命令,或用sed或awk命令来截取状态信息中文件的大小并保存;

(5)每隔5秒钟检测一次该文件大小的信息,并与保存的文件原来的大小相比较;

(6)如果文件大小未改变,则屏幕显示不变,并继续每隔5秒钟检测一次;

(7)如果文件大小已改变,则保存新的文件大小,并在屏幕上显示:file [ filename ] size changed(括号中的filename为本程序运行时用户输入的被检测的文件名)。程序继续每隔5秒钟检测一次文件的大小;

(8)程序循环执行5~7步的操作。当被检测的文件或者已累计改变了两次大小,或者已连续被检测了十次还未改变大小时,给出相应提示,然后清屏退出。

实验内容:shell程序设计思路

(1)清屏;

clear

(2)提示用户输入要检测其状态的文件名;

echo “Input name:” read fname

(3)显示该文件的状态信息(提示:该状态信息可由命令ls –l 来得到),或找不到该文件时的错误提示;

用 if test –f $fname # 这里也可以用:if [ -f $name],测试文件是否存在 then fi ls –l [ $fname]

linux中ls -l命令以长格式显示目录下的内容列表。

输出的信息从左到右依次包括文件名、文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等

(4)用cut命令,或用sed或awk命令来截取状态信息中文件的大小并保存;

ls –l [ $fname] | cut –c 36-46 #管道:文件大小是在36列到46列 oldstat=` ` #注意是单撇号

(5)每隔5秒钟检测一次该文件大小的信息,并与保存的文件原来的大小相比较;

while [ xxx -ne. 2 ] do …… done if [ “$oldstat”=“$newstat” ] then ……. fi

(6)如果文件大小未改变,则屏幕显示不变,并继续每隔5秒钟检测一次;

(7)如果文件大小已改变,则保存新的文件大小,并在屏幕上显示:file [ filename ] size changed(括号中的filename为本程序运行时用户输入的被检测的文件名)。程序继续每隔5秒钟检测一次文件的大小;

(8)程序循环执行5~7步的操作。当被检测的文件或者已累计改变了两次大小,或者已连续被检测了十次还未改变大小时,给出相应提示,然后清屏退出。  

计数: test_count=`expr $test_count + 1` change_count=`expr $change_count + 1`. #注意,数学运算命令expr,两边用单撇号 参考代码 # #detect file status # tput clear # clear screen echo "Please input file name:" read filename filesize=`ls -l $filename | awk '{ print $5 }'` echo $filesize cursize=`ls -l $filename | awk '{ print $5}'` echo $cursize change=0 unchange=0 while [ "$change" -le 1 -a "$unchange" -le 9 ] do if [ "$filesize" == "$cursize" ] then unchange=`expr $unchange + 1` echo "unchange=$unchange" else filesize=$cursize change=`expr $change + 1` echo "file $filename size changed" fi sleep 5 sync cursize=`ls -l $filename | awk '{ print $5 }'` done; echo "finish" exit 0 程序要求达到的运行效果

./test05.sh运行程序

1、程序运行时,如果找不到指定的文件,程序提示错误信息:

创建test.txt文件,输入123456

2、运行程序,输入要检查的文件名file1,在十次检查周期内,文件大小都一直不变的情况下,程序输出如下信息:

 

3、一旦当发现检查的文件大小改变时,程序显示如下信息:

监测过程中文件大小改变1次

后台修改文件内容

 

监测过程中文件大小改变2次



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3